Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: shut down gracefully with ctrl+c #1364

Merged
merged 8 commits into from
Nov 30, 2024
Merged

Conversation

simonsan
Copy link
Contributor

@simonsan simonsan commented Nov 23, 2024

If you have a long-running process, like webdav or backup or others, pressing CTRL+C usually results in a non-zero exit code:

process didn't exit successfully: P:\CARGO\.cargo-target-win\debug\rustic.exe -P <PROFILE> webdav (exit code: 0xc000013a, STATUS_CONTROL_C_EXIT)

This shouldn't be the case, as it was user initiated and we can shut down gracefully.

This PR adds this functionality, so CTRL+C shuts down rustic gracefully and exits with a 0 exit-code.

@simonsan simonsan added C-enhancement Category: New feature or request A-ui-ux Area: Related to user interfaces and user experience S-waiting-for-review Status: PRs waiting for review labels Nov 23, 2024
@simonsan simonsan requested a review from nardoor November 23, 2024 17:19
Copy link
Member

@aawsome aawsome left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@aawsome aawsome enabled auto-merge November 30, 2024 21:02
@simonsan simonsan disabled auto-merge November 30, 2024 21:08
@simonsan simonsan merged commit 852635e into main Nov 30, 2024
27 checks passed
@simonsan simonsan deleted the feat/graceful-shutdown branch November 30, 2024 21:09
aawsome added a commit that referenced this pull request Dec 2, 2024
## 🤖 New release
* `rustic-rs`: 0.9.4 -> 0.9.5 (✓ API compatible changes)

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

## [0.9.5](v0.9.4...v0.9.5)
- 2024-12-02

### Added

- *(commands)* More dump options
([#1339](#1339))
- shut down gracefully with ctrl+c
([#1364](#1364))
- Add --filter-jq option
([#1372](#1372))
- *(async)* use `is_async_compatible()` to determine backend
incompatibility and error out
([#1355](#1355))
- *(commands)* Add `mount` command
([#973](#973))

### Fixed

- *(commands)* run backup hooks before checking source dir
([#1374](#1374))
- *(commands)* Use spawn_blocking in webdav when calling rustic_core
([#1365](#1365))
- *(filesystem)* Use channels to communicate within webdav filesystem
([#1361](#1361))

### Other

- Add documentation for `minutely` keep option
([#1371](#1371))
- update snapshots to include minutely configuration options
- *(deps)* update rustic_core, bytes, and libc dependencies to latest
versions
- simplify lifetime annotations in OpenFileReader and TreeIterItem
implementations
- clean up whitespace and update clippy linting allowances
- *(deps)* update dependencies to latest versions
- *(deps)* update lockfile to get rid of vulnerable `url` version
- *(mount)* rename fields for clarity, add user options for mount
([#1353](#1353))
- *(deps)* update dependencies
- *(deps)* don't use rustic_core webdav feature
([#1367](#1367))
- Revert "fix(filesystem): Use channels to communicate within webdav
filesystem ([#1361](#1361))"
- Revert "feat(async): use `is_async_compatible()` to determine backend
incompatibility and error out
([#1355](#1355))"
- move `webdavfs` from `rustic_core` to `rustic-rs`
([#1363](#1363))
- *(clippy)* comment out unused lints in lib.rs
- *(clippy)* apply fixes automatically
- use BTreeMap for env in global options
([#1360](#1360))
- add tiny framework for testing rustic's compat with latest restic
([#1303](#1303))
- use snapshot tests for default config, show-config and completions
([#1359](#1359))
- *(deps)* update dependencies rustic_core, rustic_backend,
rustic_testing, and migrate to conflate 0.3
([#1357](#1357))
- fix typos
- *(build)* add platform-dependent settings and remove ci flag for extra
features
- clarify `--use-profile` command in config by using long form
([#1344](#1344))
- *(deps)* update core and testing crates
([#1340](#1340))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/MarcoIeni/release-plz/).

---------

Co-authored-by: rustic-release-plz[bot] <182542030+rustic-release-plz[bot]@users.noreply.github.com>
Co-authored-by: Alexander Weiss <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-ui-ux Area: Related to user interfaces and user experience C-enhancement Category: New feature or request S-waiting-for-review Status: PRs waiting for review
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants